\subsection{\Example{} \#4}

\label{win16_32bit_values}

\lstinputlisting[style=customc]{\CURPATH/ex4.c}

\lstinputlisting[style=customasmx86]{\CURPATH/ex4.lst}

\myindex{MS-DOS}
\RU{32-битные значения (тип данных \TT{long} означает 32-бита, а \Tint здесь 16-битный) 
в 16-битном коде (и в MS-DOS и в Win16) передаются парами)}
\EN{32-bit values (the \TT{long} data type implies 32 bits, while \Tint is 16-bit)
in 16-bit code (both MS-DOS and Win16) are passed in pairs}.
\RU{Это так же как и 64-битные значения передаются в 32-битной среде}
\EN{It is just like when 64-bit values are used in a 32-bit environment} (\myref{sec:64bit_in_32_env}).

\TT{sub\_B2} \RU{здесь это библиотечная функция написанная разработчиками компилятора, делающая}
\EN{here is a library function written by the compiler's developers that does} \q{long multiplication}, \RU{т.е. перемножает
два 32-битных значения}\EN{i.e., multiplies two 32-bit values}.
\RU{Другие функции компиляторов делающие то же самое перечислены здесь}
\EN{Other compiler functions that do the same are listed here}: \myref{sec:MSVC_library_func}, \myref{sec:GCC_library_func}.

\myindex{x86!\Instructions!ADD}
\myindex{x86!\Instructions!ADC}
\EN{The}\RU{Пара инструкций} \TT{ADD}/\TT{ADC} \RU{используется для сложения этих составных значений}
\EN{instruction pair is used for addition of compound values}: 
\RU{\TT{ADD} может установить или сбросить флаг \TT{CF}, а \TT{ADC} будет использовать его после.}
\EN{\TT{ADD} may set/clear the \TT{CF} flag, and \TT{ADC} uses it after.}

\EN{The}\RU{Пара инструкций} \TT{SUB}/\TT{SBB} \RU{используется для вычитания}\EN{instruction pair is used for subtraction}: 
\RU{\TT{SUB} может установить или сбросить флаг \TT{CF}, \TT{SBB} будет использовать его после.}
\EN{\TT{SUB} may set/clear the \TT{CF} flag, \TT{SBB} uses it after.}

\RU{32-битные значения возвращаются из функций в паре регистров \TT{DX:AX}}
\EN{32-bit values are returned from functions in the \TT{DX:AX} register pair}.

\RU{Константы так же передаются как пары в}\EN{Constants are also passed in pairs in} \TT{WinMain()}\EN{ here}.

\myindex{x86!\Instructions!CWD}
\RU{Константа 123 типа \Tint в начале конвертируется (учитывая знак) в 32-битное значение 
используя инструкция \TT{CWD}}
\EN{The \Tint{}-typed 123 constant is first converted according to its sign into a 32-bit value using the \TT{CWD} instruction}.

